문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 프로세스 스케줄링 (문단 편집) == 개요 == 단일[[프로세서]] 시스템(Single Processor System)에서는 한 번에 한 프로세스만 실행[* execute와 run은 모두 한국어로 '실행하다'로 번역된다. 하지만 컴퓨터에서 이 두 단어의 뜻은 조금 다른데, execute는 '어떤 프로그램을 메모리에 올려서 프로세서가 처리할 수 있게 하다'의 의미이고, run은 'execute된 프로그램(이때부터는 프로그램이라 하지 않고 프로세스라 한다)을 실제로 프로세서가 읽어 명령들을 처리하다'의 의미이다. 단일프로세서 시스템에서도 여러 개의 프로그램을 execute할 수 있다. (메모리 용량이 허용하는 이상 execute 가능하다.) 하지만 이들 중 [[프로세서]]는 한 번에 오직 단 하나의 프로세스만 run할 수 있다.(= 오직 단 하나의 프로세스만이 [[CPU]]를 사용할 수 있다.) 쉽게 말하면 여러분은 책상에 여러 과목 책을 올려 둘 수 있지만(execute) 공부는 한번에 한 과목만 할 수 있다.(run)]될 수 있다. 하지만 프로세스가 항상 [[CPU]]를 사용하는 것은 아니다. 키보드나 마우스 등의 입력 장치에서 사용자의 입력을 기다리거나, 프린터 등의 느린 출력장치에서 데이터를 출력할 때 CPU는 일을 하지 않고 가만히 있는다. 일반적으로 프로세스는 CPU를 한차례 사용(CPU burst)하고 I/O를 한차례 사용(I/O burst)하는 주기를 반복한다. I/O를 사용하는 주기에서는 CPU를 사용하지 않는다. 그렇다면 여러 프로세스를 처리할 때, 한 프로세스가 모든 작업이 끝날때까지 기다렸다가 다음 프로세스를 실행하는 방법보다 '''한 프로세스를 실행 가능한 시점까지 실행하고, I/O 등 CPU를 사용하지 않는 작업을 할 때는 다른 프로세스를 실행한다'''면 CPU 사용 효율을 높일 수 있다. 오늘날의 [[운영체제]]는 위 아이디어를 프로세스 스케줄링(Process Scheduling)이라는 기술로 구현한다. 프로세스 스케줄링은 운영체제가 하는 가장 중요한 일 중 하나이다. 이 문서는 유명한 프로세스 스케줄링 알고리즘에 대해 서술하는 문서이다. 다른 말로는 스레드 스케줄링(Thread Scheduling)이라는 개념이 있다. 과거에는 프로그램 실행 흐름이 프로세스 밖에 없었으나 프로세스보다 작은 실행 흐름인 스레드가 등장하면서 현재 운영체제의 스케줄링은 스레드를 최소 단위로 하고 있다. 즉 스레드가 명령 실행을 담당하고 프로세스는 이러한 스레드들을 모아놓고 메모리를 할당하고 자원을 공유시키는 하나의 그룹이라고 보면 된다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기